
package controladores;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.LinkedList;
import java.util.Vector;
import javax.swing.JOptionPane;
import modelos.modelo_categoria;
import modelos.modelo_ingrediente;
import modelos.modelo_producto;
import vistas.vista_producto;


public class controlador_producto implements ActionListener {
    vista_producto v_producto;
    modelo_producto m_producto;
    modelo_categoria m_categoria;
    modelo_ingrediente m_ingregiente;
    LinkedList<modelo_ingrediente> linfo_ingredientes;
    LinkedList<modelo_ingrediente> linfo_ingredientes2;
    LinkedList<modelo_categoria> linfo_categorias;
    modelo_ingrediente m_ingrediente_2;

    public void actionPerformed(ActionEvent e) {
    String boton = e.getActionCommand();
    if (boton.equals("agregar"))
      agregar();
    else if (boton.equals("eliminar"))
      eliminar();
    else if (boton.equals("grabar"))
      registrar();


    }

    public controlador_producto(vista_producto v_producto) {
        this.v_producto = v_producto;
        m_categoria = new modelo_categoria();
        m_ingregiente = new modelo_ingrediente();
        m_producto = new modelo_producto();
        linfo_ingredientes  =new LinkedList<modelo_ingrediente>();
        linfo_ingredientes2 =new LinkedList<modelo_ingrediente>();
    }

     void agregar()
    {
     Vector<String> datos = new Vector<String>();
     m_ingrediente_2 = new modelo_ingrediente();

     int indice=v_producto.comboIngredientes.getSelectedIndex();
     m_ingrediente_2.setId(linfo_ingredientes.get(indice).getId().toString());
     m_ingrediente_2.setNombre(linfo_ingredientes.get(indice).getNombre().toString());
     m_ingrediente_2.setCantidad(Float.parseFloat(v_producto.txtCantidad.getValue().toString()));
     m_ingrediente_2.setDescripcion("");
     datos.add(m_ingrediente_2.getId());
     datos.add(m_ingrediente_2.getNombre());
     datos.add(String.valueOf(m_ingrediente_2.getCantidad()));
     v_producto.tablemodel.addRow(datos);
      linfo_ingredientes2.add(m_ingrediente_2);
    }
    void eliminar()
    {
        if(v_producto.tablemodel.getRowCount()>0)
        {
         v_producto.tablemodel.removeRow(v_producto.tabla.getSelectedRow());
         linfo_ingredientes2.remove(v_producto.tabla.getSelectedRow());
        }
    }

    void registrar()
    {

     if(vacio())
     {

        m_producto.insertar(v_producto.txtCodigo.getText(),v_producto.txtNombre.getText(),v_producto.txtDescripcion.getText(),linfo_categorias.get(v_producto.comboCategoria.getSelectedIndex()).getId_cat(),v_producto.txtPrecio.getText(),linfo_ingredientes2);
        JOptionPane.showMessageDialog(v_producto,"se ha registrado el producto exitosamente");
        v_producto.cancelar();
     }
     else
     {
      JOptionPane.showMessageDialog(v_producto,"verifique, faltan por llenar datos");
     }
    }


    public void cargar_combo()
    {
       linfo_categorias   = m_categoria.getInfo();
        for (int i = 0; i < linfo_categorias.size(); i++) {
            v_producto.comboCategoria.addItem(linfo_categorias.get(i).getNombre());
        }
        linfo_ingredientes = m_ingregiente.get_info();
        for (int i = 0; i < linfo_ingredientes.size(); i++) {
            v_producto.comboIngredientes.addItem(linfo_ingredientes.get(i).getNombre());
        }
    }
    
   public boolean vacio()
   {

   if(v_producto.txtCodigo.getText().isEmpty() || v_producto.txtNombre.getText().isEmpty() || v_producto.txtDescripcion.getText().isEmpty() || v_producto.txtPrecio.getText().isEmpty())
       return false;
       else
       return true;
   }






}
